高性能架构的核心指标
高性能架构设计的首要任务是定义"高性能"的衡量标准。业界常用的两个核心指标是TPS和QPS。
TPS(Transactions Per Second)
TPS即每秒事务数,衡量系统每秒能处理多少完整的事务。一个"事务"通常指一个完整的业务操作,比如用户下单(包含扣减库存、创建订单、扣款等多个步骤)。
QPS(Queries Per Second)
QPS即每秒查询数,衡量系统每秒能处理多少查询请求。对于接口服务来说,QPS是最常用的性能指标。
其他关键指标
| 指标 | 含义 | 用户体验关联 |
|---|---|---|
| 响应时间(RT) | 从请求发出到收到响应的时间 | 直接影响用户感知 |
| 并发数 | 系统同时处理的请求数 | 系统承载能力 |
| 吞吐量 | 单位时间内处理的请求总量 | 系统整体处理能力 |
| 错误率 | 请求失败的比例 | 服务可靠性 |
高并发架构设计策略
缓存策略
缓存是提升系统性能最有效的手段之一。热点数据存储在内存中(Redis、Memcached),避免每次请求都查询数据库。
多级缓存架构:
浏览器缓存 → CDN缓存 → 反向代理缓存(Nginx)→ 应用缓存(本地缓存)→ 分布式缓存(Redis)→ 数据库
text
缓存策略的关键决策:
- 缓存什么数据(热点数据、计算结果、不常变化的数据)
- 缓存失效策略(TTL过期、主动更新、LRU淘汰)
- 缓存穿透防护(布隆过滤器、空值缓存)
- 缓存雪崩防护(随机TTL、多级缓存)
异步处理
对于不需要即时返回结果的操作(如发送邮件、生成报表、数据同步),采用异步处理避免阻塞主流程。
异步方案对比:
| 方案 | 适用场景 | 实现复杂度 |
|---|---|---|
| 回调函数 | 简单异步操作 | 低 |
| Promise/async-await | 前端异步流程 | 低 |
| 消息队列(RabbitMQ/Kafka) | 服务端异步解耦 | 中 |
| 事件总线 | 进程内事件通信 | 低 |
前端的Loading状态、骨架屏、图片懒加载都是"感知性能优化"——通过异步和视觉反馈让用户感觉系统更快。
数据库优化
- 索引优化:为高频查询字段建立合适的索引
- SQL优化:避免全表扫描、减少JOIN操作
- 读写分离:主库写、从库读,分散数据库压力
- 分库分表:单表数据量超过千万行时考虑分表
- 连接池管理:复用数据库连接,减少连接建立的开销
CDN加速
静态资源(图片、CSS、JS、字体文件)通过CDN分发到离用户最近的边缘节点,减少网络延迟。前端项目部署时通常会将构建产物上传到CDN,HTML文件中引用CDN地址。
负载均衡
将请求均匀分发到多台服务器,避免单台服务器过载:
- 四层负载均衡(LVS):基于IP和端口进行转发,性能极高
- 七层负载均衡(Nginx):基于HTTP协议进行转发,功能更丰富(路径路由、Header修改等)
- DNS负载均衡:在DNS层面将域名解析到多个IP
高性能的妥协策略
有时候无法实现绝对的高性能,可以通过"变相"手段提升用户体验:
- 感知优化:Loading动画、骨架屏、进度条让等待过程不焦虑
- 渐进式加载:先加载核心内容,非关键内容延迟加载
- 预加载:预测用户行为,提前加载可能需要的资源
- 降级服务:高并发时关闭非核心功能,保障核心功能可用
↑